/**
 * 消息常量定义
 * 统一管理前端常用的消息字符串，避免硬编码
 * 
 * @author Wu.Liang
 * @date 2025-01-30
 */

// ==================== 通用消息 ====================

/**
 * 通用消息常量
 */
export const MESSAGES = {
  // 操作结果
  SUCCESS: '操作成功',
  FAILED: '操作失败',
  REQUEST_SUCCESS: '请求成功',
  REQUEST_FAILED: '请求失败',
  
  // 网络相关
  NETWORK_CONNECTION_FAILED: '网络连接失败，请检查网络设置',
  LOGIN_TOO_MANY_FAILURES: '登录失败次数过多，请稍后重试',
  
  // 认证相关
  LOGIN_EXPIRED: '登录已过期，请重新登录',
  PERMISSION_DENIED: '权限不足',
  RESOURCE_NOT_FOUND: '请求的资源不存在',
  SERVER_ERROR: '服务器内部错误',
  INVALID_USERNAME_PASSWORD: '用户名或密码错误',
  INVALID_CAPTCHA: '验证码错误',
  USER_LOCKED: '用户已被锁定',
  LOGIN_ATTEMPTS_EXCEEDED: '登录失败次数过多，请稍后重试',
  
  // 用户相关
  USER_DISABLED: '用户已被禁用',
  
  // 未知状态
  UNKNOWN_STATUS: '未知状态',
  UNKNOWN_TYPE: '未知类型',
  UNKNOWN_ROLE: '未知角色',
  UNKNOWN_MODULE: '未知模块',
  UNKNOWN_ACTION: '未知操作'
} as const

// ==================== 用户相关消息 ====================

/**
 * 用户相关消息常量
 */
export const USER_MESSAGES = {
  // 用户信息操作
  GET_USER_DETAIL_FAILED: '获取用户详情失败',
  UPDATE_USER_INFO_FAILED: '更新用户信息失败',
  UPLOAD_AVATAR_FAILED: '上传头像失败',
  
  // 房户信息操作
  GET_HOUSEHOLD_INFO_FAILED: '获取房户信息失败',
  BIND_HOUSEHOLD_FAILED: '绑定房户失败',
  
  // 设备信息操作
  GET_DEVICE_INFO_FAILED: '获取设备信息失败',
  UPDATE_DEVICE_INFO_FAILED: '更新设备信息失败',
  
  // 认证相关
  LOGIN_FAILED: '登录失败',
  REGISTER_FAILED: '注册失败',
  GET_USER_INFO_FAILED: '获取用户信息失败',
  TOKEN_REFRESH_FAILED: 'Token刷新失败',
  CHANGE_PASSWORD_FAILED: '修改密码失败',
  
  // 验证码相关
  GET_CAPTCHA_FAILED: '获取验证码失败',
  SEND_SMS_CODE_FAILED: '发送短信验证码失败',
  VERIFY_SMS_CODE_FAILED: '验证短信验证码失败',
  
  // 生物识别相关
  ENABLE_BIOMETRIC_FAILED: '启用生物识别失败',
  BIOMETRIC_LOGIN_FAILED: '生物识别登录失败'
} as const

// ==================== 缓存相关消息 ====================

/**
 * 缓存相关消息常量
 */
export const CACHE_MESSAGES = {
  // 本地缓存
  SET_LOCAL_CACHE_FAILED: '设置本地缓存失败',
  GET_LOCAL_CACHE_FAILED: '获取本地缓存失败',
  DELETE_LOCAL_CACHE_FAILED: '删除本地缓存失败',
  CLEAR_LOCAL_CACHE_FAILED: '清空本地缓存失败',
  
  // 会话缓存
  SET_SESSION_CACHE_FAILED: '设置会话缓存失败',
  GET_SESSION_CACHE_FAILED: '获取会话缓存失败',
  DELETE_SESSION_CACHE_FAILED: '删除会话缓存失败',
  CLEAR_SESSION_CACHE_FAILED: '清空会话缓存失败'
} as const

// ==================== 加密相关消息 ====================

/**
 * 加密相关消息常量
 */
export const CRYPTO_MESSAGES = {
  // AES加密
  AES_ENCRYPT_FAILED: 'AES加密失败',
  AES_DECRYPT_FAILED: 'AES解密失败',
  
  // 哈希算法
  MD5_HASH_FAILED: 'MD5哈希失败',
  SHA256_HASH_FAILED: 'SHA256哈希失败',
  SHA512_HASH_FAILED: 'SHA512哈希失败',
  
  // Base64编码
  BASE64_ENCODE_FAILED: 'Base64编码失败',
  BASE64_DECODE_FAILED: 'Base64解码失败',
  URL_SAFE_BASE64_ENCODE_FAILED: 'URL安全的Base64编码失败',
  URL_SAFE_BASE64_DECODE_FAILED: 'URL安全的Base64解码失败',
  
  // 密码相关
  PASSWORD_HASH_FAILED: '密码哈希失败',
  PASSWORD_VERIFY_FAILED: '密码验证失败',
  
  // JWT相关
  GENERATE_JWT_FAILED: '生成JWT失败',
  VERIFY_JWT_FAILED: '验证JWT失败'
} as const

// ==================== 文件相关消息 ====================

/**
 * 文件相关消息常量
 */
export const FILE_MESSAGES = {
  FILE_UPLOAD_FAILED: '文件上传失败',
  FILE_DOWNLOAD_FAILED: '文件下载失败',
  RESPONSE_DATA_PARSE_FAILED: '响应数据解析失败'
} as const

// ==================== 支付相关消息 ====================

/**
 * 支付相关消息常量
 */
export const PAYMENT_MESSAGES = {
  PAYMENT_SUCCESS: '支付成功',
  PAYMENT_FAILED: '支付失败',
  GET_PAYMENT_INFO_SUCCESS: '获取支付信息成功',
  CHECK_PAYMENT_STATUS_SUCCESS: '检查支付状态成功'
} as const

// ==================== 物业相关消息 ====================

/**
 * 物业相关消息常量
 */
export const PROPERTY_MESSAGES = {
  // 物业公司相关
  CHECK_PROPERTY_COMPANY_SUCCESS: '检查物业公司关联成功',
  CHECK_PROPERTY_COMPANY_FAILED: '检查物业公司关联失败',
  
  // 物业信息相关
  GET_PROPERTY_INFO_SUCCESS: '获取物业信息成功',
  GET_PROPERTY_INFO_FAILED: '获取物业信息失败',
  GET_PROPERTY_STATS_SUCCESS: '获取物业统计信息成功',
  GET_PROPERTY_STATS_FAILED: '获取物业统计信息失败',
  UPDATE_PROPERTY_INFO_SUCCESS: '更新物业信息成功',
  UPDATE_PROPERTY_INFO_FAILED: '更新物业信息失败',
  
  // 页面访问相关
  PAGE_ACCESS_SUCCESS: '页面访问成功',
  PAGE_ACCESS_FAILED: '页面访问失败',
  
  // 权限相关
  PROPERTY_INFO_VIEW_PERMISSION_NORMAL: '物业信息查看权限正常',
  PROPERTY_INFO_VIEW_PERMISSION_TEST_FAILED: '物业信息查看权限测试失败',
  PROPERTY_INFO_UPDATE_PERMISSION_NORMAL: '物业信息更新权限正常',
  PROPERTY_INFO_UPDATE_PERMISSION_TEST_FAILED: '物业信息更新权限测试失败'
} as const

// ==================== 验证相关消息 ====================

/**
 * 验证相关消息常量
 */
export const VALIDATION_MESSAGES = {
  VALIDATION_FAILED: '验证失败'
} as const

// ==================== 工具函数 ====================

/**
 * 获取消息常量
 * @param category 消息类别
 * @param key 消息键
 * @returns 消息内容
 */
export function getMessage(category: keyof typeof MESSAGES | keyof typeof USER_MESSAGES | keyof typeof CACHE_MESSAGES | keyof typeof CRYPTO_MESSAGES | keyof typeof FILE_MESSAGES | keyof typeof PAYMENT_MESSAGES | keyof typeof PROPERTY_MESSAGES | keyof typeof VALIDATION_MESSAGES, key: string): string {
  const messageMap = {
    ...MESSAGES,
    ...USER_MESSAGES,
    ...CACHE_MESSAGES,
    ...CRYPTO_MESSAGES,
    ...FILE_MESSAGES,
    ...PAYMENT_MESSAGES,
    ...PROPERTY_MESSAGES,
    ...VALIDATION_MESSAGES
  }
  
  return messageMap[key as keyof typeof messageMap] || MESSAGES.UNKNOWN_STATUS
}

/**
 * 获取用户相关消息
 * @param key 消息键
 * @returns 消息内容
 */
export function getUserMessage(key: keyof typeof USER_MESSAGES): string {
  return USER_MESSAGES[key]
}

/**
 * 获取缓存相关消息
 * @param key 消息键
 * @returns 消息内容
 */
export function getCacheMessage(key: keyof typeof CACHE_MESSAGES): string {
  return CACHE_MESSAGES[key]
}

/**
 * 获取加密相关消息
 * @param key 消息键
 * @returns 消息内容
 */
export function getCryptoMessage(key: keyof typeof CRYPTO_MESSAGES): string {
  return CRYPTO_MESSAGES[key]
}

/**
 * 获取文件相关消息
 * @param key 消息键
 * @returns 消息内容
 */
export function getFileMessage(key: keyof typeof FILE_MESSAGES): string {
  return FILE_MESSAGES[key]
}

/**
 * 获取支付相关消息
 * @param key 消息键
 * @returns 消息内容
 */
export function getPaymentMessage(key: keyof typeof PAYMENT_MESSAGES): string {
  return PAYMENT_MESSAGES[key]
}

/**
 * 获取物业相关消息
 * @param key 消息键
 * @returns 消息内容
 */
export function getPropertyMessage(key: keyof typeof PROPERTY_MESSAGES): string {
  return PROPERTY_MESSAGES[key]
}

/**
 * 获取验证相关消息
 * @param key 消息键
 * @returns 消息内容
 */
export function getValidationMessage(key: keyof typeof VALIDATION_MESSAGES): string {
  return VALIDATION_MESSAGES[key]
} 